feat(ui): make the overview mobile-friendly#28
Merged
Merged
Conversation
The desktop layout was unusable on phones: the 256px sidebar stayed pinned and pushed `main` off-screen at every breakpoint, job-card names were truncated even on wide desktops (a nested 2-column queue keeps cards ~320px), and the floating bulk-action bars ran off both screen edges. Navigation - Sidebar is now an overlay drawer below `lg` (slides in over content with a dimmed backdrop, auto-closes on navigation); the `main` offset is `lg:`-only so mobile uses full width. Desktop keeps the pinned, collapsible sidebar. Adds a transient `mobileNavOpen` UI state. - Header has separate mobile (drawer) / desktop (collapse) toggles and trims the wordmark/status-label/username to fit narrow screens. Job cards - JobCard is now a container (`@container`): the name wraps instead of truncating, the badge row wraps, the meta row stacks when narrow, and the action icons collapse into a labelled overflow menu on narrow cards (inline icons on wide ones). Fixes mobile and the narrow-desktop-queue truncation in one place. Group page - Header title/actions stack on mobile; bulk-action bars are contained and wrap on mobile, centered-floating on desktop. - Template cards are container-driven (full-width wrapping name + action row below on mobile, side-by-side on desktop) and a horizontal-overflow bug from a bare grid track + long <pre> is fixed. Other pages - JobDetailDialog field grids stack on small screens; long titles wrap. - Runners table scrolls horizontally on mobile (was clipping the Labels and Last Seen columns); header counts wrap. Verified at 390 / 768 / 1024 / 1440 px across all tabs with no horizontal overflow. Also carries the pre-existing benchmarkoor run-link work that was already in the working tree (config.ts / config.json and the card links).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The overview was built for desktop and broke down on phones. This makes it responsive end-to-end while keeping the desktop layout intact.
The three root problems:
fixed w-64panel andmaingotml-64at every breakpoint, leaving ~134px of usable width on a 390px phone.truncate— hence needing a very wide window to read details.Changes
Navigation
lg(slides in over content with a dimmed backdrop, auto-closes on nav); themainoffset islg:-only so mobile uses full width. Desktop keeps the pinned, collapsible sidebar. New transientmobileNavOpenUI state (not persisted).Job cards (
JobCard)@container: the name wraps instead of truncating, the badge row wraps, the meta row stacks when narrow, and the action icons collapse into a labelled overflow menu on narrow cards (inline icons on wide ones). Fixes both mobile and the narrow-desktop-queue truncation.Group page
gridtrack + long<pre>config.Other
JobDetailDialogfield grids stack on small screens; long titles wrap.overflow-hidden); header counts wrap.Testing
Driven in a real browser at 390 / 768 / 1024 / 1440 px across Dashboard, Queue, History (linear + grouped), Templates, Runners, the job-detail dialog, the nav drawer, and the bulk-action bar. No horizontal overflow on any page (
scrollWidth == clientWidth). The@containercards verified to switch between the overflow menu (narrow) and inline icons (wide).tsc,eslint, andvite buildall clean.Note
This branch also carries the pre-existing benchmarkoor run-link work that was already in the working tree (
config.ts/config.jsonand the run links inJobCard/JobDetailDialog) — it's intertwined with the card refactor andconfig.tsis needed to compile. Happy to split it out if preferred.